home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr38 / bcheck13.zip / BCHECK13.DOC < prev    next >
Text File  |  1995-03-05  |  45KB  |  883 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                                                                   BCHECKERS |
  7.                                                                             |
  8.                                                                 version 1.3 |
  9.                                                                             |
  10.                                                                             |
  11.                             A multi-node checkers door for most BBS systems |
  12.                                       Copyright 1995 by DIRT CHEAP SOFTWARE |
  13.                                                Written in C by Bruce Bowman |
  14.                                                                             |
  15.                                                    Released January ?, 1995 |
  16.                                                                             |
  17.                                INTRODUCTION
  18.                                ------------                                                                          
  19.  --------------------------------------------------------------------------
  20.  | >Disclaimer<  Throughout this document, I have used the masculine gender |
  21.  | when referring to a "generic" person.   This is only to avoid continuous |
  22.  | use of such things as (s)he, which I find annoying. I have total respect |
  23.  | for the females of the species; I even married one. So lighten up.   :^) |
  24.  |   --------------------------------------------------------------------   |
  25.  | >Disclaimer #2<  The author of this program, Bruce Bowman, promises only |
  26.  | that this program will take up space on your hard drive (and perhaps not |
  27.  | even that). I've put a lot of my time and sweat equity into this, and in |
  28.  | return I ask only that you  try it and remit a token sum if you continue |
  29.  | to do so. I make no claims for its suitability for a particular purpose, |
  30.  | and guarantee nothing  whatsoever regarding potential damage to your own |
  31.  | computer or hard-acquired files.  I can only suggest that you  do what I |
  32.  | do, and back up  your hard drive frequently.  If the unthinkable happens |
  33.  | and some terrible fate should befall you  as a direct or indirect result |
  34.  | of using BCheckers, you will have my utmost sympathy -- but that's about |
  35.  | all. So there.   :^)                                                     |
  36.  |                           --------------------                           |
  37.  | This software is copyrighted: You're subject to the associated penalties |
  38.  | of law if you attempt to reverse-engineer it, hack the key routines,  or |
  39.  | otherwise steal the benefits of all my aforementioned sweat equity.      |
  40.   --------------------------------------------------------------------------
  41.    
  42. As a sysop of a FidoNet BBS, I was disappointed in the lack of a good,
  43. non-interactive checkers door. Sure, there were some that allowed inter-
  44. node play and the like, but these were expensive and few offered any 
  45. decent ANSI graphics and the simple ability to have callers make moves 
  46. on alternate logons. I also wanted to try my hand at programming in C, 
  47. having learned a number of other programming languages. BCheckers is the 
  48. result of this effort; and at only $10 is a bargain in shareware.
  49.  
  50. BCheckers offers the following sysop features (and more I've probably
  51. overlooked in these docs):
  52.  
  53. -  As you would expect, BCheckers monitors carrier detect functions, to
  54.    automatically recover when a user drops carrier.                    
  55.                                                                        
  56. -  Includes a fully-adjustable inactivity timeout monitor. A warning is
  57.    sent 5 seconds before the caller is ejected.
  58.  
  59. -  Share-aware file i/o for use in multi-node BBS systems. You must have 
  60.    DOS's SHARE.EXE loaded for multi-node use.             
  61.  
  62. -  Supports most popular BBS door information files, such as DORINFO1.DEF,
  63.    EXITINFO.BBS, CHAIN.TXT, DOOR.SYS, etc.  
  64.  
  65. -  Displays and updates a QuickBBS-style status line, with information 
  66.    available to the sysop such as user name, location, baud rate, time left, 
  67.    function keys, ANSI and AVATAR settings, and so on.
  68.    
  69. -  Keeps track of a user "wants-chat" indicator, just like the one in
  70.    RemoteAccess, QuickBBS and other BBS systems. Allows for sysop page from
  71.    the door, and integrated chat mode.
  72.  
  73. -  Provides the sysop with all the standard function keys for adjusting user 
  74.    time, hanging up on or even locking out the user -- and sysop shell to DOS.
  75.  
  76. -  Full support for locked baud-rates of up to 115200 baud, using the FOSSIL
  77.    driver for maximum compatibility with any system. If a FOSSIL is not
  78.    available, BCheckers will use its own communications routines. Auto-detect
  79.    of local operation.
  80.  
  81. -  BCheckers is also DesqView and Windows aware. It will automatically check 
  82.    for the presence of a multitasker, and if available, will perform all of 
  83.    its screen output through the appropriate function calls.
  84.  
  85.                         CONVERTING FROM VERSION 1.0
  86.                         ---------------------------                                                   
  87.  * * IMPORTANT!! * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  88.  * If you've been running version 1.0 of this program,  you MUST execute * 
  89.  *  10TO11.EXE in the BCHECK directory prior to running version 1.1 or   *
  90.  *                    any later version of BCHECKERS!!                   *
  91.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  92.  
  93. The data file BCHECK.BBS in versions after 1.0 now hold the players' comments 
  94. to each other and a draw-request indicator. Each record is 78 bytes longer 
  95. than in version 1.0. If you run later versions without running 10TO11.EXE, 
  96. you will corrupt your BCHECK.BBS file and lose all games in progress. Your 
  97. callers probably won't appreciate this!
  98.  
  99. To upgrade, overwrite your old copy of BCHECK.EXE with the new version. Copy
  100. the 10TO11.EXE file to the directory containing your BCHECK.BBS file. Close
  101. any tasks that might access the BCHECK program, then type the following at 
  102. the DOS prompt:
  103.  
  104.   10TO11
  105.  
  106. This will update the BCHECK.BBS file to the new format. Once completed, you 
  107. may delete the 10TO11.EXE program. If you don't mind losing all your games, 
  108. just delete the BCHECK.BBS file from the DOS prompt. 
  109.  
  110. IF YOU'RE NOT RUNNING VERSION 1.0, YOU DO *NOT* NEED TO USE 10TO11.EXE!!
  111.  
  112.  
  113.                             BCHECKERS QUICKSTART
  114.                              ------------------
  115. To get the door up and running when not upgrading, do the following...
  116.  
  117. 1) Copy the BCHECK.EXE file to the directory from which you plan to run
  118.    the door.
  119.  
  120. 2) Create a door batch file, similar to the following: 
  121.  
  122.        CD \BBS\DOORS           (location of BCHECK executable)
  123.        BCHECK <parameters>     (see below)
  124.        CD \BBS
  125.        EXIT
  126.  
  127. 3) Create a menu entry to call the door. This varies according to your
  128.    BBS software. I recommend a "spawn" type of door call (e.g.: type 7 on
  129.    QuickBBS or Remote Access).
  130.   
  131. That's really about all there is to it! Now, you need to know about the
  132. command line parameters, so here goes...
  133.  
  134.       
  135.                           COMMAND LINE PARAMETERS
  136.                           -----------------------
  137. ** Soapbox mode ON **
  138. One thing that has always irritated me is the number of config files and
  139. the like that clutter my directories. I see no need to have an executable,
  140. a maintenance program, a config file and program, and a data file for each
  141. game (like many door programmers prefer). Although harder to do, I've
  142. designed BCheckers so it doesn't need all those files -- all it uses, besides
  143. the executable, is two data files (the Hall of Fame and a user activity
  144. log). Configuration is done exclusively via command line parameters.
  145. ** Soapbox mode OFF **
  146.  
  147. Call the program with the following syntax. Only the <path> parameter is
  148. required. Parameters indicated with an asterisk (*) can only be configured
  149. in the registered version.
  150.                                                                           
  151.  
  152. BCHECK <path> <DtoL> <DtoK*> <MaxGam*> <InAct*> <MaxTim*> <PaOff*> <PaOn*>
  153.  
  154.                                                     [ <Baud> <IRQ> <Add> ]
  155.            
  156. Where:
  157.  
  158. <path>    REQUIRED: Path to the door drop file(s). This will vary depending
  159.           on the node using the door. I usually set things up so the node
  160.           number is passed on the batch file command line, so the door can
  161.           be called with something like:  BCHECK \BBS\NODE%1. That way, you
  162.           can use the same batch for any number of nodes.
  163.           You can also force BCheckers to preferentially read a particular
  164.           drop file by placing its name along with the full path. This is
  165.           handy if BCheckers is reading one drop file first -- one that 
  166.           doesn't have all the data it needs to run properly.
  167.  
  168. <DtoL>    "Days to Lose" - Number of days before an inactive game is 
  169.           aborted. This is the way we keep games from piling up without 
  170.           someone actively playing. If a player does not make a move in 
  171.           a game after this number of days, the last player to move is 
  172.           declared the winner (if there ARE two players -- otherwise the
  173.           game is simply deleted).
  174.           Default value is 21 days (3 weeks). If you choose to use this 
  175.           default but want to specify a value for one of the subsequent 
  176.           parameters, insert XX (or any other string of *non-numeric* 
  177.           characters) as a placeholder. All this really does is make 
  178.           sure the help screens give the correct value to your callers 
  179.           -- check out the "maintenance" section later in this document.
  180.          
  181. <DtoK*>   "Days to Keep" - Number of days a completed game is held before 
  182.           being purged from the game file. This allows a few days for the 
  183.           players and other callers to see the outcome. Treat this just as 
  184.           you would the DtoL parameter. Default is 10 days. 
  185.          
  186. <MaxGam*> Maximum number of games an individual can play at once. Default 
  187.           value is 5, acceptable range is 1-200. A value of zero is 
  188.           ignored, giving the default. Again, insert a placeholder if you 
  189.           want to specify a value for any subsequent parameters.
  190.          
  191. <InAct*>  Time, in seconds, before a user is returned to the BBS for
  192.           inactivity. If your caller goes to sleep at the terminal, this
  193.           will bump him off and back to the board. Keep this number high
  194.           enough that the caller has enough time to think about what
  195.           move he wants to make. Default is 200 seconds.
  196.          
  197. <MaxTim*> Maximum time, in minutes, you will allow a caller to spend in 
  198.           the door. Default is the total amount of connect time available 
  199.           to the caller (ie: no restriction). A warning is sent shortly
  200.           before the caller runs out of time.                 
  201.          
  202. <PaOff*>  Time, in minutes after midnight, for paging hours to end. Valid
  203.           numbers are 0-1440. By default, paging is always on; so if you
  204.           enter an invalid number, that's what you'll get.  
  205.           
  206. <PaOn*>   Time, in minutes since midnight, for paging hours to resume. If
  207.           you *never* want a caller to page you, enter a value of exactly
  208.           midnight (zero) for PageOn, or simply don't provide a value for
  209.           PageOn at all.
  210.           
  211. USE THE FOLLOWING PARAMETERS ONLY IF YOU DO NOT USE A FOSSIL FOR MODEM I/O!
  212. Using any of these parameters disables use of the FOSSIL. In most cases, it
  213. is better to set one or more of these values on your FOSSIL command line and
  214. just use the FOSSIL for i/o -- but if your BBS software does not require a
  215. FOSSIL, or for some reason you prefer the FOSSIL not be used, you can still
  216. run the door using these parameters and BCheckers's internal comm routines.
  217.  
  218. <Baud>    The computer-to-modem data transfer rate (DTE speed). THIS IS NOT
  219.           THE MODEM-TO-MODEM CONNECT SPEED. This value must evenly divide
  220.           115200 (115200, 57600, 38400, 28800, 23040, 19200, 14400, etc). Do
  221.           not use a comma (ie: do not enter the value as 57,600 -- it won't
  222.           work).
  223.           If all you want to do is force BCheckers to use its comm routines,
  224.           you can again put XX or any other non-numeric placeholder string in
  225.           this position. If you use hardware data compression on your modem
  226.           (V.42bis or others), I suggest using a value of 4x your highest
  227.           connect speed to avoid losing characters. For example, for a 9600
  228.           baud modem with V.42bis, I recommend using 38400 here.
  229.                                                              
  230. <IRQ>     Sets the IRQ line to be used by your modem. Normally, BCheckers 
  231.           will determine the standard IRQ line used by COM1-COM4. If you use
  232.           a non-standard IRQ line for your modem (usually to avoid a 
  233.           conflict with another device) place its value here.
  234.  
  235. <Add>     Base address (in hex). BCheckers can normally determine the base
  236.           address of the port for you. However, if you prefer to change the
  237.           base address, place its value here. MAKE SURE IT IS CORRECT!! If
  238.           it isn't, BCheckers will still dutifully follow your instructions
  239.           and perhaps overwrite important areas of memory. If you don't
  240.           understand any of this, DO NOT put ANYTHING here.
  241.           
  242.           Standard base addresses and IRQs follow. These are the values that
  243.           will be used based on the COM port passed in the BBS drop files,
  244.           unless remapped by your FOSSIL or on the BCheckers command line:
  245.  
  246.                           COM1    03F8h and IRQ4
  247.                           COM2    02F8h and IRQ3
  248.                           COM3    03E8h and IRQ4
  249.                           COM4    02E8h and IRQ3
  250.  
  251. Examples:
  252.  
  253.    BCHECK \BBS\NODE1
  254.    
  255.          Bring up the door with the drop file located in the \BBS\NODE1
  256.          directory. All other parameters take their default values.
  257.          
  258.    BCHECK \BBS\NODE2 30 XX XX 300 30
  259.    
  260.          Run the door from node 2. Thirty days before declaring a winner 
  261.          due to inactivity. Use the default value for days to keep and 
  262.          games per player (10 days and 5 games, respectively). Increase 
  263.          the inactivity timeout to 300 seconds, and allow no more than 30
  264.          minutes in the door.
  265.     
  266.    BCHECK \BBS\NODE1 15
  267.      
  268.          Same as the first example, but keep games for only 15 days before
  269.          declaring a winner due to inactivity.  
  270.              
  271.    BCHECK XX 20
  272.    
  273.          ERROR. Path to the drop file is REQUIRED. This will assume the
  274.          drop file is located in the XX directory, which is probably not
  275.          what you wanted. 
  276.          
  277.    BCHECK \BBS\NODE1 XX XX XX XX XX 1260 420
  278.    
  279.          Run BCheckers with the defaults, except disable sysop paging at
  280.          9 p.m. and resume at 7 a.m.
  281.  
  282.    BCHECK \BBS\NODE3 XX XX 8 XX XX XX XX XX
  283.    
  284.          Run BCheckers, forcing use of internal comm routines (assuming a
  285.          FOSSIL is not available). Callers will be allowed to play no more
  286.          than 8 games each.
  287.                   
  288.    BCHECK\BBS\NODE%1 XX XX XX XX XX XX 115200 7 02E8
  289.  
  290.          Run BCheckers using the internal comm routines and non-standard
  291.          modem settings indicated. The node passed on the batch file
  292.          command line is using the door.
  293.                                        
  294.  
  295.                               SYSOP FUNCTIONS
  296.                               ---------------
  297. Status Line - By default, the status line is OFF. To turn it on, press F10.
  298. The status line lists the name of the user currently on-line, his location, 
  299. and baud rate (0 if the door is operating in local mode). You may also find
  300. out how much time the user has left, check for indicators as to whether the 
  301. user has ANSI and/or AVATAR modes on, etc.  If the user wishes to Chat with 
  302. the sysop (ie: they have paged the sysop, but haven't received a response), 
  303. a [Want-Chat] indicator will flash on the status line. 
  304.  
  305. [F1]..[F10] - The Function keys [F1] thru [F10] allows the sysop access to 
  306.               various types of information on the status line, or to turn 
  307.               the status line off. These keys are as follows:
  308.  
  309.               [F1] -  Display basic door and user information
  310.               [F2] -  Display phone numbers and important dates
  311.               [F3] -  Display security flags and up/download info
  312.               [F4] -  Display system information and current time
  313.               [F5] -  Display message info and user's settings
  314.               [F6] -  Display chat reason and sysop's comment
  315.               [F9] -  Display help information for sysop
  316.               [F10] - Toggle the status line on/off                               
  317.               
  318. In normal usage, the screen will often scroll one line when it attempts to 
  319. print on a line that is "under" the status line. I REPEAT -- THIS IS NORMAL. 
  320. Everything looks fine from remote. Keep the status line off when playing in 
  321. local mode.
  322.  
  323. The following other function keys are also available to the sysop:
  324.  
  325. [UP]/[DOWN] - Use the arrow keys to increase or decrease the amount of 
  326.               time the caller has left in the door.
  327.  
  328. [Alt]-[C] -   Allows the sysop to break into chat with the caller at any 
  329.               time. [Alt]-[C] again, or [ESC] will end chat mode. (Notice 
  330.               that the Want-Chat indicator will also be turned off, if it 
  331.               was flashing). If your door is running under Apex, Remote
  332.               Access or QuickBBS, paging from within the door will also
  333.               cause the Want-Chat indicator to stay lit when the user 
  334.               returns to the BBS.
  335.  
  336. [Alt]-[J] -   Allows the sysop to shell to DOS, if enough memory is 
  337.               available. Simply type EXIT to return to the door.
  338.  
  339. [Alt]-[H] -   Hang up on the user. Drops carrier and returns to the BBS.
  340.  
  341. [Alt]-[L] -   This key locks the user out of the BBS. It first hangs up 
  342.               on the user, and then sets their security level to 0, to 
  343.               prevent them from ever logging on again. This feature may 
  344.               require use of the EXITINFO.BBS file, depending on what 
  345.               system the door is running under.
  346.  
  347. [Alt]-[K] -   The "User Keyboard-Off" key allows the sysop to temporarily 
  348.               prevent the user from typing anything on their keyboard. 
  349.               This has no effect on the local keyboard, but causes the
  350.               door to ignore any keystrokes from remote.
  351.  
  352. [Alt]-[N] -   The "Sysop Next" key, this function reserves the system for 
  353.               use by the sysop after the user logs off, if the door is 
  354.               running under an Apex or RA 1.00 or later system.
  355.  
  356. [Alt]-[D] -   "Drop to BBS" key. This function allows the sysop to exit 
  357.               the door and return the user to the BBS, without hanging up.
  358.  
  359.                                                       
  360.                                USING THE DOOR
  361.                                --------------
  362. The door is menu-driven, and most of the functions are self-explanatory. A 
  363. brief overview will be given here.
  364.  
  365. The door is based on the "touch-move" premise. Once a legal piece is chosen, 
  366. the caller is *required* to move that piece. If only one move is available 
  367. for the chosen piece, that move will be made immediately -- otherwise, the 
  368. door will prompt for a destination square by highlighting the legal moves 
  369. with flashing pieces. Also, the door will not allow the caller to "take back" 
  370. a move. Thus, it is very important that the caller use due discretion in 
  371. evaluating the board position *before* they start to make a move. 
  372.  
  373. This is not because I am lazy -- the door has been *purposely* programmed 
  374. this way. Checkers is supposed to be something of an intellectual game, and 
  375. it is the opinion of this programmer that allowing "take-backs" defeats the 
  376. purpose of having game doors that are in principle a cerebral challenge 
  377. between the players. 
  378.  
  379. The door conforms to Hoyle's rule for jumps (rather than "Huff or Blow"). If 
  380. the caller has a capture, he *must* make a capture. If a new game is started, 
  381. the player is assigned the Black pieces for his first move (in keeping with 
  382. Checkers conventions). The opponent is "No One" until someone joins the game.
  383.     
  384. The opening screen allows the caller to perform most game operations, as
  385. follows:
  386.  
  387. 1) Make a Move -- The caller may make a move in a game in which he is
  388.    already a player. These games are presented in a list, from which the 
  389.    player chooses the game number. The game selected is then presented to 
  390.    him.   
  391.    If it isn't the caller's move, or the game has been completed, a message 
  392.    to that effect will be displayed. 
  393.    If it is the caller's move, the door will first check if his opponent 
  394.    has offered a draw. If so, he is allowed to accept or reject the offer. 
  395.    If accepted, the game is drawn immediately...otherwise, the offer is 
  396.    discarded and the game proceeds normally. The door then presents the
  397.    caller with his opponent's message and the following choices:
  398.    
  399.    <E>xit -- Abort move selection and return to the game selection menu.
  400.    <M>ove -- Make a move. The caller will be prompted for a piece to move
  401.      and a destination square, if required. If the caller selects an 
  402.      illegal move, the door displays an error message and highlights the 
  403.      legal moves.
  404.      Once a move is made, the door checks for whether the opponent also has 
  405.      a legal move -- if not, the game is won! Otherwise, the caller has the 
  406.      opportunity to either leave a message to his opponent or offer a draw. 
  407.      Up to 75 alphanumeric and punctuation characters may be entered for 
  408.      the opponent to read prior to his next move. If an offer to draw is
  409.      made, a confirmation prompt is displayed to ensure that the key wasn't
  410.      hit by mistake. If confirmed, the opponent will be shown the offer and 
  411.      the game will be immediately declared a draw if he accepts.
  412.    <R>edraw Screen -- Use this if something messes up in data transmission
  413.      and the screen needs to be cleaned up.
  414.    <F>orfeit Game -- Use if you want to "give up" and allow your opponent
  415.      to win. The caller is prompted for confirmation before the game is
  416.      declared lost. You must have an opponent to forfeit to!
  417.           
  418. 2) View Games in Progress -- Displays any game that has not been deleted. A
  419.    list of current games is presented to the user so he may select one to
  420.    view. The board position is then displayed along with status information.
  421. 3) Start a New Game -- Same as #1 above, but starts a new game. The caller
  422.    is always given the Black pieces to start the game. Of course, the
  423.    <F>orfeit and <D>raw options are not available in this case, since the 
  424.    caller has no opponent yet.                                  
  425. 4) Join a Game -- Allows the caller to join a game that someone else 
  426.    started. Having joined the game, the player receives the White pieces, 
  427.    and is given the opportunity to make a move immediately.
  428. 5) Checkers Rules and History -- Displays a 3-screen overview of Checkers
  429.    rules and history. This has been paraphrased from Hoyle.
  430. 6) Door Help -- A succinct listing of non-obvious information that should
  431.    prove useful to first-time users of the door.   
  432. 7) Page the Sysop -- The sysop can break into chat mode at any time with 
  433.    Alt-C...this command allows the caller to request chat mode.    
  434. 8) Quit to the BBS -- Exit the door and return to the board.
  435. 9) Logoff -- Exit completely, dropping carrier.
  436.  
  437.                         CARE AND FEEDING OF BCHECKERS
  438.                          ---------------------------                                 
  439. **Warning** While you *can* run the MAINT function with the door online, if 
  440. there are many games or players this may cause a timeout of a user's file 
  441. access in another task. This won't cause any damage, but it is best to take 
  442. down all of your BBS nodes prior to running the MAINT function. The other
  443. functions do not keep the files open as long, and are thus less likely to
  444. cause difficulties -- just make sure you have DOS's SHARE.EXE loaded.  
  445.  
  446.                                 Maintenance
  447.                              
  448. In order to actually delete old games and declare winners in expired games,
  449. the maintenance function should be run daily along with your normal BBS
  450. routine. This is accomplished by using the same command line as for normal
  451. execution of the program, but replacing the path to the drop file with the
  452. string "MAINT". This will go through the game data file and update it as
  453. needed. 
  454.  
  455. I highly recommend that other parameters used during maintenance be kept 
  456. the same as you normally use when running the door. If you don't, no real 
  457. harm will befall you, but your callers may become upset with you once they 
  458. realize that their help files state the game is deleted after 21 days but 
  459. the games are actually deleted in 15!
  460.  
  461. Examples:    
  462.  
  463.    BCHECK MAINT
  464.     
  465.          Update the BCHECK.BBS file, using defaults.
  466.     
  467.    BCHECK MAINT 30 XX XX 300 30
  468.    
  469.          Use this to perform maintenance on the games data file, using the
  470.          same parameters as used for running the game (from example 2
  471.          displayed previously).
  472.  
  473.                              Game Deletion
  474.  
  475. If desired, an individual game may be deleted from the command line. This
  476. enables you to get rid of games from players like "George Washington," or
  477. otherwise deal with twits without adversely affecting the other callers. 
  478.  
  479. For example, call the program as follows to delete game #4:
  480.  
  481.    BCHECK DELETE 4
  482.    
  483. **Warning** Do NOT omit the game number on the command line, or the 
  484. program will delete game number 21 (if it exists). The reasons for this
  485. are not particularly important, but in general I feel that if you are 
  486. going to do this kind of thing, you'd better be on your toes anyway. If 
  487. the number is higher than the total number of games, or zero or less, a 
  488. harmless error message is displayed. 
  489.  
  490. If you wish to delete *all* the games, simply delete the BCHECK.BBS file 
  491. at the DOS prompt. The file will be created as needed the next time the 
  492. door is used.
  493.  
  494. I do not plan anything more elaborate than this for sysop intervention,
  495. but will entertain any ideas you may have.
  496.  
  497.                             Status Bulletin
  498.                            
  499. BCheckers will generate a game status bulletin when called with the 
  500. following syntax:
  501.  
  502. BCHECK STATUS 0|1
  503.  
  504. The bulletin is sent to StdOut, and can be redirected to a file for display
  505. on your BBS; or even redirected to the COM port and run as a separate door! 
  506. The 0 or 1 indicates whether an ASCII or ANSI bulletin is generated; if 
  507. omitted, you will get an ASCII bulletin. This bulletin indicates whose move 
  508. it is in any active game, as follows:
  509.  
  510.          BCHECKERS Game Status
  511.          
  512. Game #  1: Jane Doe needs an opponent...
  513. Game #  2: Ringo Bowman needs an opponent...
  514. Game #  8: John Public to move...
  515. Game #  9: Joe Blow to move...
  516. [etc...]
  517.  
  518. Press ENTER               
  519.  
  520. Completed games do not appear in the bulletin. Note that the bulletin 
  521. actually begins with an ASCII 12 character (clear screen on most systems) 
  522. and ends with an ASCII 1 (wait for the ENTER key).
  523.                                                                   
  524.                           Hall of Fame Bulletin
  525.  
  526. BCheckers will read the BCHECK.HOF file and generate a hall of fame bulletin 
  527. when called with the following syntax:
  528.  
  529. BCHECK FAME 0|1
  530.  
  531. Like the game status, the bulletin is sent to StdOut, and the 0 or 1 directs
  532. the program to generate an ASCII or ANSI bulletin. The bulletin gives player
  533. stats as follows:
  534.      
  535.               BCHECKERS HALL of FAME
  536.  
  537.       Player            Wins Losses Draws Percent
  538.       ------            ---- ------ ----- -------
  539. Richard Hangslough        2     0     0     100
  540. Boz Scaggs               11     2     0      84
  541. Jethro Tull               9     2     3      75
  542. Pink Floyd               10     2     8      70
  543. Howard Johnson            4     2     3      61
  544. Bruce Bowman              7     4     3      60
  545. Fleetwood Mac             2     2     3      50
  546.  
  547. Press ENTER  
  548.  
  549. Up to 18 players will be listed, in order of winning percentage. Draws are
  550. treated as 1/2 game won and 1/2 game lost. The percentage is truncated to 
  551. the nearest percent.
  552.      
  553.                               REGISTRATION
  554.                               ------------
  555. To Other Shareware Authors:
  556.  
  557. I will happily exchange registrations to any of my products, if what you 
  558. have interests me at all.  Netmail me with the specifics if interested.
  559.  
  560. (Not responsible for lost or misrouted mail!).
  561.  
  562. The key consists of a small file that resides in the same directory as
  563. your game file (BCHECK.BBS). Ordinarily, I would find this abhorrent -- 
  564. but I'm just too stupid to figure out a way to patch the executable with 
  565. a key entered in a config program (which would also require a config 
  566. program!).
  567.  
  568.                          Benefits of Registration
  569.                          ------------------------
  570.  
  571. 1) The door will only allow configuration of "days to lose", com port
  572. parameters, and drop file path until you register. You can go ahead and 
  573. enter the extra parameters on the command line, but they will be ignored.
  574. Most of the defaults are pretty reasonable, though.
  575.  
  576. 2) You cannot disable paging or set paging hours unless registered.
  577.  
  578. 3) The door will only allow up to 12 concurrent games until you register.
  579. Once registered, up to 200 games may be played.                
  580.  
  581. 4) The door will display -= UNREGISTERED =- when returning to the BBS
  582. until you register.
  583.  
  584. 5) You will receive preferential support from the author.
  585.  
  586. 6) You will have peace of mind, knowing that you are supporting shareware.
  587.  
  588. The key routine could probably be cracked eventually by someone with a hex 
  589. editor and a lot of time on their hands. More elaborate protection schemes 
  590. than mine have suffered this fate. However, I'm not asking much money for 
  591. this -- so save yourself some effort and cough up the cash.
  592.  
  593. How do you register?  Send $10 (US) cash, check or money order, payable to
  594. Bruce Bowman, to the following address:
  595.  
  596.                        DIRT CHEAP SOFTWARE
  597.                        c/o Bruce Bowman
  598.                        8364 S. State Road 39
  599.                        Clayton, IN  46118
  600.  
  601. Allow 2 weeks for personal checks to clear. I'm told it's not a good idea 
  602. to send cash via the mail, but I've never had problems with it. If you 
  603. decide to do so, and the money gets ripped off, I will feel sorry for you 
  604. but I won't waive your registration fee over it.
  605.  
  606. Accompany this with the form on the following page...or otherwise provide 
  607. this information.  Registrations without this information WILL be ignored
  608. (I will make a feeble attempt to contact you, and eventually tear up your
  609. check).
  610.  
  611. It is also a very good idea to send a copy of your BBS drop file with your
  612. registration. Since the door reads data from your drop file to determine
  613. if the key will work, it is very important that both the sysop name and
  614. the BBS name be provided EXACTLY as present in your drop files. If you
  615. cannot guarantee this, you should send me your drop files.
  616.  
  617. On occasion I have attempted to netmail certain individuals keys, only to 
  618. get bad connects -- I simply cannot afford this. If your BBS is only online
  619. during certain hours, let me know. If I get two bad connects trying to 
  620. netmail a key, I will give up and put it on hold for you and notify you of 
  621. this fact via routed netmail (which itself is not very reliable anymore).
  622.  
  623. NOTE:
  624. Registered keyholders receive FREE UPGRADES when they become available.
  625. You will have to check in though, since I don't plan to notify everyone of
  626. an upgrade individually.
  627.  
  628.                           BCHECKERS REGISTRATION 
  629.                                Version 1.3
  630.                               
  631. IMPORTANT!  The BBS name and SYSOP name must match your door   IMPORTANT!
  632. IMPORTANT! drop file EXACTLY, or your key won't work. Consider IMPORTANT! 
  633. IMPORTANT!     sending us a copy of your BBS drop file(s)!     IMPORTANT!                    
  634.  
  635. *SYSOP NAME: __________________________________________________________
  636.  
  637. ADDRESS: ______________________________________________________________
  638.  
  639. _______________________________________________________________________
  640.  
  641. _______________________________________________________________________
  642.  
  643. *BBS NAME: ____________________________________________________________
  644.  
  645. BBS Phone: ____________________________________________________________
  646.  
  647. BBS Software/Version: _________________________________________________
  648.  
  649. NETWORK: _______________________________________ (FidoNet, etc, if any)
  650.  
  651. NETWORK NODE NUMBER: _______ : ________ / ________ (if above completed)
  652.  
  653. AMOUNT ENCLOSED: ______________________      NOTE: Registration is $10!
  654.                                                                     
  655. HOW DO YOU WANT TO PICK UP THE KEY?
  656.  
  657. [ ] ... Put on hold for me at 1:231/710 for the Net/Node listed above.
  658.  
  659. [ ] ... Send via FidoNet crashmail to the node indicated above.
  660.  
  661. [ ] ... Here's $2.00 Upload it to me as well as the latest version.  
  662.         Acount Information as Follows:
  663.  
  664.         Account Name:  Bruce Bowman
  665.         
  666.         Password: ____________________________________
  667.         
  668.         Miscellaneous Info: ________________________________________
  669.  
  670.         ____________________________________________________________
  671.  
  672.  
  673. [ ] ... Send on disk to the address above (very slow!) Please add $5 to 
  674.         cover disk, mailing costs, and my hassle.  
  675.         Please ship my key and latest copy via  [ ] - 5.25"   [ ] - 3.5"
  676.                                                                     
  677. [ ] ... YES!! I WANT THE SPECIAL DEAL! Send me latest version of KaBoom!
  678.         and its key for only $5 more!!
  679.  
  680. COMMENTS/SUGGESTIONS/BUGS: ____________________________________________
  681.  
  682. _______________________________________________________________________
  683.  
  684. __________________________________________________________________@o.th  
  685.                             TECHNICAL SUPPORT
  686.                             ----------------- 
  687.  
  688. TECHNICAL SUPPORT IS PROVIDED ONLY THROUGH EMAIL OR CALLING MY BBS! 
  689.  
  690. I have had people ask me to call them long-distance on my dime -- I simply 
  691. don't make enough money on BCheckers to justify this. There seems to be a
  692. perception amongst the sysop community that door authors are getting rich
  693. selling their doors, but the truth is that most sysops never register their
  694. doors. To provide some perspective, I've spent well over a hundred hours 
  695. programming this door, and have yet to make $2/hour on it.
  696.  
  697. To obtain support, you must call my BBS or send me email. You won't obtain 
  698. full access to my BBS on your first call, but you can leave a message to 
  699. the sysop at logoff, which I will get. You will then receive a temporary 
  700. account until your problem is resolved. You'll have to call the BBS again 
  701. to get your reply; or if you're on FidoNet and can wait, I can send you 
  702. routed netmail. 
  703.  
  704.                    The H.O.M.E. BBS
  705.                    (317) 539-6579 - 28.8 kbps
  706.                    FIDONET:  1:231/710
  707.                    DOORNET:  75:7317/71
  708.                    INTERNET: beb@lilly.com or
  709.                              Bruce_Bowman@f710.n231.z1.fidonet.org
  710.  
  711. If you are having problems with your key, you MUST give me a copy of your 
  712. door drop files, or I won't be able to help you.
  713.  
  714. FREQUENT COMMENTS
  715. -----------------
  716.  
  717. Q: The door can't find the game file, or it can't find my key even though 
  718.    I've registered. Help!
  719. A: Run the door from the directory containing the game file and the key.
  720.    The executable can be anywhere on your path, and the drop file path
  721.    is passed on the command line. If your key is named something else, be
  722.    sure to rename it to BCHECK.KEY.
  723.  
  724.    The 52-line DOOR.SYS drop file does not contain the system name.
  725.    Since the system name is necessary for the key routine to work, you
  726.    must create some other drop file. I suggest you use one of the many
  727.    drop file converters on the market; DoorMaster is probably the best
  728.    program for this purpose. Make sure to configure the converter so it 
  729.    adds your BBS name to the new drop file. If your BBS software creates
  730.    other drop files in addition to DOOR.SYS, try just adding DEL DOOR.SYS
  731.    to the batch file before running the door.
  732.    
  733.    If it still does not recognize your key, you either did not provide 
  734.    the correct BBS and sysop names on your registration form, or your
  735.    system is misconfigured so this information is not appearing in your
  736.    drop files. Upload a copy of your drop files to the support BBS or via
  737.    email to one of the listed addresses.
  738.    
  739. Q: I know there's a game in there waiting for a new player, but the door
  740.    won't let me make a move in that game. It doesn't even show up in the
  741.    play list.
  742. A: Use the "join a game" function rather than "make a move."
  743.  
  744. Q: The screen display gets messed up -- once it prints a move, the screen
  745.    jumps up one line and subsequent prints overwrite the board.
  746. A: This happens only on the local screen when the status line is turned
  747.    on. The remote screen is not affected. 
  748.    For local play, turn off the status line with F10 (it defaults to OFF 
  749.    anyway). I assume any local player already knows his own user stats.
  750.    
  751. Q: The game prints [2;4m brackets and other junk characters all over.
  752. A: The door requires ANSI graphics capability. Exit the door and rectify 
  753.    the situation.
  754.   
  755. Q: The status line function keys don't work right -- they cause the door 
  756.    to act peculiar and even lock up.
  757. A: Have you defined the offending F-keys to launch a macro? Don't feel bad; 
  758.    I did this myself with a DV script, and was quite bewildered for awhile!
  759.                                   
  760. Q: The file BCHECK.BBS or BCHECK.HOF exists, but I occasionally still get 
  761.    a message from the door saying "Error opening BCHECK.BBS/BCHECK.HOF!"
  762. A: The door will try 20 times to open the file over a 10-second interval. If 
  763.    this fails, BCheckers gives up with an error.    
  764.    You may be running out of file handles. Increase the number of FILES in 
  765.    your CONFIG.SYS. 
  766.    It is also possible that one task in a multi-tasking environment opened
  767.    the file, and then crashed without closing it. If so, you will probably
  768.    have to reboot to clear the error.
  769.    This may also rarely happen during intensive disk activity in a multi-
  770.    tasking environment (for example, when copying files to/from floppies). 
  771.    Use a copy utility (like DVCOPY) that will properly release time slices 
  772.    to your door.
  773.    You *do* have DOS's SHARE.EXE loaded, don't you?
  774.  
  775. Q: The door gives me the error message -- "Timeout on BCHECK.BBS read 
  776.    operation."  What does THAT mean?
  777. A: As before, a task has grabbed exclusive access to the file and never
  778.    closed it (or at least didn't do so within 10 seconds). The remedy is
  779.    pretty much the same; although if you were running the MAINT procedure
  780.    during the error, the door will probably work now without rebooting.
  781.  
  782. Q: BCheckers made me move somewhere I didn't want to move!
  783. A: The door enforces Hoyle's rules, and will not allow a caller to deviate
  784.    from them. Since many of your callers will not be familiar with these 
  785.    rules, the key points are presented in the door help screens.      
  786.  
  787. PRODUCT HISTORY
  788. ---------------
  789. 1/81   Wrote my first Checkers game, in BASIC (of all things). Artificial 
  790.        intelligence -- play against the game. SLOW....
  791.          
  792. 3/94   Decided to write BCheckers, as an exercise in teaching myself C.
  793.        Found out I could port almost *none* of my original BASIC code.
  794.  
  795. 4/94   First beta release of BCheckers (version 0.90ß). Bug-laden.
  796.  
  797. 6/94   Released version 1.0 (finally!). Fixed bug where the game always
  798.        played in registered mode (boy, you guys would've loved that)!
  799.        Apparently, fixing a drop file bug introduced another one. I 
  800.        believe I have it now...
  801.  
  802. 6/94   Released version 1.0a. Version 1.0 was never really hatched, but
  803.        a few people did file request it. While it's highly unlikely you
  804.        will experience problems running 1.0, 1.0a does include more 
  805.        testing for file access conflicts in multi-node systems (and
  806.        helpful error messages). Other minor cosmetic improvements (like
  807.        stating that you are indeed being logged off when requested). 
  808.  
  809. 7/94   Released version 1.1 -- some minor bug fixes, as follows:
  810.  
  811.        1) If more than 19 games, the <more> prompt is no longer displayed 
  812.           on the same line as the 19th game. 
  813.        2) The "taken pieces" display would sometimes overwrite part of the 
  814.           "Checkers" logo if a player had crowned more pieces than his 
  815.           opponent had captured (a *very* rare circumstance). Fixed.
  816.        3) The game wouldn't recognize an upper case "Y" to verify a game 
  817.           forfeit (it would stubbornly wait for a lower case "y"). Fixed.
  818.        4) The color intensity on the remote screen would sometimes not be 
  819.           set properly. Fixed.
  820.           
  821.        New stuff: 
  822.        
  823.        1) Added the game-draw function. I have visions of many people out 
  824.           there playing version 1.0 with 1 king vs. 1 king, and no way to 
  825.           bring the game to a satisfactory conclusion! Shame on me...
  826.        2) Added the ability to set sysop paging hours.
  827.        3) Added support for leaving a note to your opponent.
  828.        4) Added the game status bulletin generator.
  829.        5) Added the hall of fame bulletin generator.
  830.        6) Added support for the RA 2.00 EXITINFO.BBS drop file format.
  831.        7) Logoff key is now "!". It was too easy to accidentally hit "9" 
  832.           rather than "8", and end up disconnecting rather than returning 
  833.           to the BBS.    
  834.  
  835. 7/94   Released version 1.1a. Found a minor bug in the Hall of Fame 
  836.        bulletin and squashed it.
  837.  
  838. 8/94   Released version 1.2. Added a carriage return to the bulletin code
  839.        in case the caller does not have screen clearing turned on. Changed
  840.        all "Press any key" prompts to "Press ENTER." This allows the user
  841.        to still take advantage of type-ahead, while fixing a problem with 
  842.        some modems sending a ^Q character when using XON/XOFF handshaking. 
  843.        Speeded up both the main menu and the board drawing routines. Board
  844.        display now shows the player's names on both sides of the board.
  845.  
  846.        Some drop file converters pad the BBS name or sysop name with extra
  847.        spaces, which caused difficulties in key recognition. BCheckers now
  848.        strips these spaces prior to applying the key recognition routine.
  849.                                                     
  850.        Made some minor changes in check for move legality in anticipation
  851.        of a "play again the computer" mode for version 2.0.
  852.  
  853. 8/94   I hate bug-fix releases! Version 1.2a was necessary to fix a bug 
  854.        that kept the bulletin generators from working. Also added code to
  855.        flush the keyboard buffer just before exiting.
  856.  
  857. 3/95   BCheckers 1.3 parses multiple drop files more effectively. This
  858.        should solve some rare/intermittent problems with key recognition.
  859.  
  860.        The QuickBBS format of EXITINFO.BBS file is now handled properly.
  861.        This should fix the "time left" problem on returning to QuickBBS.
  862.  
  863.        Previous versions of BCheckers required XON/XOFF handshaking if a
  864.        FOSSIL was not available. Hardware handshaking is now supported.
  865.  
  866.        Non-standard IRQs and base addresses are now supported if not using
  867.        a FOSSIL.
  868.        
  869.        Cleaned up the Hall of Fame code so that players with a 1-0 record
  870.        aren't listed above those with a 10-0 record just because both are
  871.        100%.         
  872.        
  873.        The "maxtime" parameter works now (when registered).
  874.  
  875.  
  876.                             FUTURE OF BCHECKERS
  877.                             ------------------- 
  878. Ultimately, we may add internode or inter-BBS play. I've also had a request 
  879. for a "play against the computer" mode, which I plan to implement in version
  880. 2.0. Register now while the program is still cheap!
  881.  
  882. I would welcome other ideas on how BCheckers can be improved.
  883.